1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package com.google.common.collect.testing;
18
19 import com.google.common.annotations.GwtIncompatible;
20 import com.google.common.collect.ImmutableSortedMap;
21 import com.google.common.collect.Lists;
22 import com.google.common.collect.Ordering;
23 import com.google.common.collect.Sets;
24 import com.google.common.collect.testing.features.CollectionFeature;
25 import com.google.common.collect.testing.features.CollectionSize;
26 import com.google.common.testing.SerializableTester;
27
28 import junit.framework.Test;
29 import junit.framework.TestCase;
30 import junit.framework.TestSuite;
31
32 import java.util.Arrays;
33 import java.util.Collections;
34 import java.util.List;
35 import java.util.Map;
36 import java.util.NavigableSet;
37 import java.util.Set;
38 import java.util.SortedSet;
39
40 public class SafeTreeSetTest extends TestCase {
41 public static Test suite() {
42 TestSuite suite = new TestSuite();
43 suite.addTestSuite(SafeTreeSetTest.class);
44 suite.addTest(
45 NavigableSetTestSuiteBuilder.using(new TestStringSetGenerator() {
46 @Override protected Set<String> create(String[] elements) {
47 return new SafeTreeSet<String>(Arrays.asList(elements));
48 }
49
50 @Override public List<String> order(List<String> insertionOrder) {
51 return Lists.newArrayList(Sets.newTreeSet(insertionOrder));
52 }
53 }).withFeatures(CollectionSize.ANY, CollectionFeature.KNOWN_ORDER,
54 CollectionFeature.GENERAL_PURPOSE).named(
55 "SafeTreeSet with natural comparator").createTestSuite());
56 suite.addTest(SetTestSuiteBuilder.using(new TestStringSetGenerator() {
57 @Override protected Set<String> create(String[] elements) {
58 NavigableSet<String> set =
59 new SafeTreeSet<String>(Ordering.natural().nullsFirst());
60 Collections.addAll(set, elements);
61 return set;
62 }
63
64 @Override public List<String> order(List<String> insertionOrder) {
65 return Lists.newArrayList(Sets.newTreeSet(insertionOrder));
66 }
67 }).withFeatures(CollectionSize.ANY, CollectionFeature.KNOWN_ORDER,
68 CollectionFeature.GENERAL_PURPOSE, CollectionFeature.ALLOWS_NULL_VALUES)
69 .named("SafeTreeSet with null-friendly comparator").createTestSuite());
70 return suite;
71 }
72
73 @GwtIncompatible("SerializableTester")
74 public void testViewSerialization() {
75 Map<String, Integer> map =
76 ImmutableSortedMap.of("one", 1, "two", 2, "three", 3);
77 SerializableTester.reserializeAndAssert(map.entrySet());
78 SerializableTester.reserializeAndAssert(map.keySet());
79 assertEquals(Lists.newArrayList(map.values()),
80 Lists.newArrayList(SerializableTester.reserialize(map.values())));
81 }
82
83 @GwtIncompatible("SerializableTester")
84 public void testEmpty_serialization() {
85 SortedSet<String> set = new SafeTreeSet<String>();
86 SortedSet<String> copy = SerializableTester.reserializeAndAssert(set);
87 assertEquals(set.comparator(), copy.comparator());
88 }
89
90 @GwtIncompatible("SerializableTester")
91 public void testSingle_serialization() {
92 SortedSet<String> set = new SafeTreeSet<String>();
93 set.add("e");
94 SortedSet<String> copy = SerializableTester.reserializeAndAssert(set);
95 assertEquals(set.comparator(), copy.comparator());
96 }
97
98 @GwtIncompatible("SerializableTester")
99 public void testSeveral_serialization() {
100 SortedSet<String> set = new SafeTreeSet<String>();
101 set.add("a");
102 set.add("b");
103 set.add("c");
104 SortedSet<String> copy = SerializableTester.reserializeAndAssert(set);
105 assertEquals(set.comparator(), copy.comparator());
106 }
107 }